package org.example.proxy.cglib;

import net.sf.cglib.proxy.Enhancer;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

/**
 * 代理类必须实现接口
 */
public class CglibDynamicProxyDemo {
    @Test
    @DisplayName("AOP示例，利用Cglib进行代理")
    public void test() {
        //被代理对象
        //动态代理对象
        Enhancer enhancer = new Enhancer();
        enhancer.setSuperclass(Cat.class);
        enhancer.setCallback(new CatMethodInterceptor());
        Cat cat = (Cat) enhancer.create();
        cat.eat();
        System.out.println("代理" + cat);
    }
}
